package com.zp.self.module.工具.json转换.json_csv;

import org.apache.commons.io.FileUtils;
import org.json.CDL;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;

import java.io.*;
import java.nio.charset.Charset;
import java.util.Map;

/**
 * @author ：by peng.zeng
 * @date ：Created 2021/9/3 15:05
 * @description ：json转换为csv--处理时间格式问题
 */
public class Json2CsvOk_date {
    public static void main(String[] args) throws IOException {
        m4();
    }

    private static void m4() throws IOException {
        //json文件地址
        JSONArray jsonArraya = getJson("C:\\Users\\peng.zeng\\Desktop\\data2.json");
        //csv文件保存地址
        String outPathPart2 = "C:\\Users\\peng.zeng\\Desktop\\210111674设备1-26 至 2-01的油位变化.csv";
        File file = new File(outPathPart2);
        //处理时间字段格式
        for (int i = 0; i < jsonArraya.length(); i++) {
            JSONObject jsonObject = jsonArraya.getJSONObject(i);
            Map<String, Object> map = jsonObject.toMap();
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                if(entry.getKey().toLowerCase().contains("time") || entry.getKey().toLowerCase().contains("tc")){
                    jsonObject .put(entry.getKey(),"\t"+entry.getValue()+"\t");
                }
            }
        }
        //jsonArraya 对象转换为csv文件
        String csv = CDL.toString(jsonArraya);
        //将String字符串写入到文件中
        FileUtils.writeStringToFile(file, csv, Charset.defaultCharset(), true);
    }
    /**
     * Description: json文件 读取到 jsonArraya
     * @Author: peng.zeng
     * @DateTime: 2021/11/20 11:56
     * @param inPath2 json文件地址
     * @return org.json.JSONArray
     */
    private static JSONArray getJson(String inPath2) throws IOException {
        BufferedInputStream fis = new BufferedInputStream(new FileInputStream(inPath2));
        BufferedReader reader = new BufferedReader(new InputStreamReader(fis, "utf-8"), 5 * 1024 * 1024);// 用5M的缓冲读取文本文件
        JSONTokener jsonTokener = new JSONTokener(reader);
        JSONArray objects = new JSONArray(jsonTokener);
        fis.close();
        reader.close();
        return objects;
    }
}
